Форум программистов, компьютерный форум CyberForum.ru

Шестнадцатеричная цифра - C++

Восстановить пароль Регистрация
 
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 13:10     Шестнадцатеричная цифра #1
как вывести k-ую справа шестнадцатеричную цифру целого положительного числа на экран в десятичной записи?

что-то я не совсем понимаю...ну допустим дана запись 0000 0000 1010 1010 и надо вывести 3ю спава цифру....это 0...так и в десятичной 0!....или мне кажется что я вообще не понимаю что делать.помогите пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.01.2011, 13:36     Шестнадцатеричная цифра #2
Запись числа отличается в разных системах. Возьмём 123456. В десятичной системе это 123456, третья справа 4. В шестнадцатеричной число уже 1E240, третья справа цифра 2, в двоичной то же число 11110001001000000, третья цифра 0, а в восьмеричной само число 361100, третья цифра 1. Ко всем прочему, записи у тебя нет и с ней ты работать не можешь А как получить цифру? Крайняя правая есть остаток от деления на цело на основание самого числа, вторая справа - остаток от деления на цело на основание целого частного от деления числа на основание, третья - остаток от деления на цело на основание целого частного от деления числа квадрат на основания. А основание у тебя 16. Итого
C++
1
cout<<(x/16/16)%16;
. А в общем виде
C++
1
2
3
4
5
6
7
8
void f(int x, int k);
{
 for (; k>0; --k)
 {
   x/=16;
 }
 cout<<x%16;
}
.

Добавлено через 8 минут
Выведется десятичное значение цифры, то есть, например, при x=123456 и k=4, на экран будет выведено не E, а 14.

Добавлено через 1 минуту
А если столько цифр просто нет, то слева число будет дополнено незначащими нолями, что правильно. Например, десятая цифра числа 123456 равна 0, исходя из того, что само число 0000123456.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.01.2011, 14:03     Шестнадцатеричная цифра #3
Цитата Сообщение от barlog Посмотреть сообщение
как вывести k-ую справа шестнадцатеричную цифру целого положительного числа на экран в десятичной записи?
Диржы n-ную слева
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <math.h>
 
int main(void){
    unsigned num;
    int pos;
    
    while ( printf("Hex number: ") && scanf("%x", &num) == 1 && num ){
        int digits = (int)(log((double)num) / log(16.0)) + 1;
        printf("position from left: ");
        if ( scanf("%d", &pos) != 1 || pos < 1 || pos > digits ){
            fprintf(stderr, "Wrong input!\n");
            return 1;
        }
        printf("Dec value: %d\n", ( num >> ( ( digits - pos ) * 4 ) ) % 16);
    }
    
    return 0;
}
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
14.01.2011, 15:32  [ТС]     Шестнадцатеричная цифра #4
Спасибо!сейчас буду разбираться...

Добавлено через 51 минуту
А вот еще хотелось спросить...а если число вещественное...есть разница между тем как целое и вещественное число представлены в памяти компьютера в 4 байтах в 16ичной записи???....я искала,везде пишут про экспоненциальную форму...а как же вещественное в 16-ичной?Расскажите пожалуйста!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.01.2011, 16:00     Шестнадцатеричная цифра #5
barlog, вот тут про вещественные числа довольно подробно расписано...
Yandex
Объявления
14.01.2011, 16:00     Шестнадцатеричная цифра
Ответ Создать тему
Опции темы

Текущее время: 13:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru