|
#1
|
|||
|
|||
Сдвиг
Читал книгу Фленова. Наткнулся на то что можно сдвигом делить и умножать числа. То есть если у нас есть число 58(111010) например, то как сделать сдвиг влево(что бы стало 29 - 11101) или в право ( что бы стало 116 - 1110100) ??
Кто сможет помочь? ) |
#2
|
||||
|
||||
Операции shl и shr
2 shl 1 = 4 4 shr 1 = 2 Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Цитата:
Код:
s:=2; s shl 1; Label1.Caption:=IntToStr(s); Должно по идеи выводить 4.. почему выводит 2? ) понял.. можно например написать так S:= 2 shl 1, и будет 4.. А как сделать как у меня? S:=2; S shl 1.. возможно ли так? Большое спасибо за ответ! Последний раз редактировалось malekskv, 24.02.2010 в 20:16. |
#4
|
|||
|
|||
Код:
s := 2; s := s shl 1; Label1.Caption := IntToStr(s); |
#5
|
|||
|
|||
Цитата:
Тюфу, так просто... Спасибо)) Еще вопрос.. как подобным образом можно умножать\делить на 3,5,6 и так далее.. и возможно ли так? |
#6
|
||||
|
||||
наверное так: )))
Код:
var sq: double; begin s := 2; s := s shl 1; sq := s / 3; // sq := s div 3; //если на цело Label1.Caption := FloatToStr(s); end; Последний раз редактировалось Ultras, 24.02.2010 в 22:09. |
#7
|
||||
|
||||
Нет, сдвиг это всегда деление/умножение на 2 в степени N, поэтому можно на 2,4,8 и т.д. но нельзя на 3,5,6
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
||||
|
||||
Цитата:
|