Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


T-SQL: Преобразование двоичного числа в целое


Сегодня разберем пример преобразования двоичного числа в целое.

Например у нас есть число "1001110 " в двоичном представлении, логика перевода такова:

-- 1001110 =                      Само число
-- 2 в шестой * 1 +            Если 1, умножаем 2 в степени(длина числа(в нашем примере это 7) минус позиция числа( тут - 1))
-- 2 в пятой * 0 +               Если 0, умножаем 2 в степени(длина числа(в нашем примере это 7) минус позиция числа( тут - 2))
-- 2 в четвертой * 0 +       Далее по аналогии...
-- 2 в третьей * 1 +
-- 2 во второй * 1 + 
-- 2 впервой * 1 +
-- 2 в нулевой * 0 
-- = 64 + 8 + 4 + 2             Складываем получившиеся результаты
-- = 78                                 Искомое число

Сама функция:

USE [Sbase]
GO

CREATE FUNCTION [dbo].[ToInt]  
(  
    @num AS VARCHAR(MAX)  
) RETURNS INT AS BEGIN

    DECLARE @pos INT = LEN(@num)
    DECLARE @i INT = 1
    DECLARE @res INT = 0
    
    WHILE @i != @pos + 1
    BEGIN
        DECLARE @char char(1) = SUBSTRING(@num, @i, 1)
        
        IF @char = '1'
        BEGIN
            SET @res = @res + POWER(2, @pos-@i) * 1
        END
        ELSE
            SET @res = @res + POWER(2, @pos-@i) * 0
        
        SET @i = @i + 1        
    END

RETURN @res;
END;

 

И вызовем функцию: SELECT Sbase.dbo.ToInt(1001110)

Видеоролик на YouTubehttps://www.youtube.com/watch?v=kTg36chVYh4


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект