Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
63 / 71 / 1
Регистрация: 23.05.2015
Сообщений: 360
Записей в блоге: 52
1

Определить значение старшего бита в четверном слове

03.09.2019, 11:28. Показов 2336. Ответов 8

Author24 — интернет-сервис помощи студентам
Имеется какое-либо четверное слово:
X64X63X62X61X60X59X58X57 X56X55X54X53X52X51X50X49 X48X47X46X45X44X43X42X41 X40X39X38X37X36X35X34X33 X32X31X30X29X28X27X26X25 X24X23X22X21X20X19X18X17 X16X15X14X13X12X11X10X9 X8X7X6X5X4X3X2X1

Нужно узнать, какой бит находится в позиции X64.

Пока придумал такой способ.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class Form1
 
    Dim numL As ULong
    Dim value As String
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        value = TextBox1.Text
 
        Try
            numL = Convert.ToUInt64(value)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
        If numL > 9223372036854775807 Then TextBox2.Text = "1" Else TextBox2.Text = "0" 'определяем значение старшего бита
    End Sub
 
End Class
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2019, 11:28
Ответы с готовыми решениями:

Позиция старшего значащего бита
Нет ли в стандартной библиотеке готовой функции находящей позицию старшего единичного бита числа?...

Сканирование с младшого до старшего бита на наличие 1
Привет всем. Нужна помощь. Есть задание: Задано число А. Мне нужно сделать сканирование с младшого...

Обнуление старшего ненулевого бита числа
Добрый день, необходимо обнулить старший ненулевой бит числа, я вроде бы делаю все правильно, но...

В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита
В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита.

8
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
03.09.2019, 13:39 2
Вариант
VB.NET
1
2
3
Dim ii As Int64 = Int64.MaxValue 'например
Dim b As String = Convert.ToString(ii, 2).PadLeft(64, "0"c)
MsgBox(b(0).ToString)
1
63 / 71 / 1
Регистрация: 23.05.2015
Сообщений: 360
Записей в блоге: 52
03.09.2019, 19:26  [ТС] 3
ovva, интересный у вас вариант. Теперь у меня появился выбор между
Код
If numL > 9223372036854775807 Then
и
Код
Convert.ToString(ii, 2).PadLeft(64, "0"c)
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
03.09.2019, 21:53 4
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

еще можно использовать битовый сдвиг
VB.NET
1
2
        Dim i As UInt64 = UInt64.MaxValue
        Dim Res = i >> 63
2
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
03.09.2019, 22:39 5
Цитата Сообщение от Step_UA Посмотреть сообщение
еще можно использовать битовый сдвиг
Не просто можно, а именно так и нужно
1
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
03.09.2019, 23:01 6
Цитата Сообщение от mozgotron Посмотреть сообщение
Нужно узнать, какой бит находится в позиции X64.
А если в позиции Х51?
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Не просто можно, а именно так и нужно
Результат сдвига не бит, а число, например ii >> 50 даст значение 8191. Соответственно для отрицательных значений ii >> 63 всегда будет давать число -1, а для неотрицательных – 0.
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
03.09.2019, 23:19 7
Цитата Сообщение от ovva Посмотреть сообщение
А если в позиции Х51?
Результат сдвига не бит, а число, ...
Комбинируем битовое "И" и сдвиг
1
63 / 71 / 1
Регистрация: 23.05.2015
Сообщений: 360
Записей в блоге: 52
03.09.2019, 23:37  [ТС] 8
Step_UA, супер!
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
03.09.2019, 23:38 9
Цитата Сообщение от ovva Посмотреть сообщение
Соответственно для отрицательных значений ii >> 63 всегда будет давать число -1, а для неотрицательных – 0.
У ТС используется UInt64 (как и в моем примере) - откуда отрицательные?
Если уж отступить от темы и искать произвольный бит, то я бы сдвигал все также вправо, а после применял "И" с единицей
1
03.09.2019, 23:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2019, 23:38
Помогаю со студенческими работами здесь

В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита
В двоичном представлении инвертировать все одиночные единицы ,кроме старшего бита.

Определите четность числа по анализу старшего бита, используя объединение с битовыми полями
Используя объединение с битовыми полями, определите четность беззнакового целого числа по анализу...

Функция, которая для заданного числа рассчитывает позицию первого слева (старшего) нулевого бита числа
Написать функцию, которая для заданного числа х рассчитывает позицию первого слева (старшего)...

как взять значение определенного бита из байта? и как организовать такое в цикля для каждого бита?
FASM моя первая задача - вычислить n-e число фибоначчи бинарное возведение в степень допустим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru